package fr.idak.sring.tiles.generic.dao;

import java.io.Serializable;
import java.util.List;

public interface GenericDao<T, PK extends Serializable> {
	/**
	 * Création d'un nouvel enregistrement
	 * @param t
	 * @return
	 */
	T create(T object);
	
	/**
	 * Recherche d'un enregistrement à partir de sa clé primaire
	 * @param id
	 * @return
	 */
    T read(PK id);
    
    /**
     * Mise à jour d'un enregistrement
     * @param t
     * @return
     */
    T update(T object);
    
    /**
     * recherche de la liste des enregistrements
     * @return
     */
    List<T> getAll();
    
    /**
     * Suppression d'un enregistrement
     * @param t
     */
    void delete(T object);
    
    /**
     * retourn le nombre total d'enregistrements 
     * @param object
     * @return int
     */
    int count();
}
